package com.yhsoft.goods.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yhsoft.benefitcard.controller.request.GetGoodsListInVo;
import com.yhsoft.benefitcard.controller.request.GetJFKGoodListInVo;
import com.yhsoft.benefitcard.controller.response.GetGoodsListOutVo;
import com.yhsoft.benefitcard.controller.response.GetJFKGoodListOutVo;
import com.yhsoft.goods.controller.requset.*;
import com.yhsoft.goods.controller.response.*;
import com.yhsoft.goods.entity.GoodsInfo;
import com.yhsoft.wxprogram.controller.request.GoodsIdsInVo;
import com.yhsoft.wxprogram.po.GoodsPo;

import java.math.BigDecimal;
import java.util.Map;

/**
 * <p>
 * 商品信息表 服务类
 * </p>
 *
 * @author yyyyyyyh
 * @since 2023-09-22
 */
public interface IGoodsInfoService extends IService<GoodsInfo> {

    IPage<AllGoodsOutVo> getAllGoods(AllGoodsInVo inVo, Long pageNo, Long pageSize);

    GoodsOutVo getGoodInfoByGoodsId(Integer goodsId);

    IPage<GoodsInfoListByCompanyIdOutVo> getGoodsListByGId(GoodsInfoListByCompanyIdInVo inVo, Long pageNo, Long pageSize);

    SkuInfoOutVo getSkuInfoOutVo(SkuInfoInVo inVo);

    IPage<GetGoodsListOutVo> getNotSelectedGoodsList(GetGoodsListInVo inVo, Long pageNo, Long pageSize);

    IPage<GetJFKGoodListOutVo> getJFKSelectedGoodsList(GetJFKGoodListInVo inVo, String batch2Num, Integer goodsType, Long pageNo, Long pageSize);

    IPage<GoodsPo> getGoodsListByCard(String goodName, String goodsType, Long pageNo, Long pageSize);

    IPage<DisGoodsOutVo> getDisGoods(DisGoodsInVo inVo, Long pageNo, Long pageSize);

    GoodsOutVo getGoodInfoWx(Integer goodsId);

    IPage<AllGoodsOutVo> getVenderGoods(VenderGoodsInVo inVo, Long pageNo, Long pageSize);

    IPage<GoodsPo> getGoodsInfoListById(GoodsIdsInVo inVo, Long pageNo, Long pageSize);

    void addGoods(AddGoodsInVo inVo);

    void updateGoods(AddGoodsInVo inVo);

    boolean exists(String goodsName);

    IPage<AllGoodsOutVo> getVenderGoodsList(VenderGoodsListInVo inVo, Long pageNo, Long pageSize);

    IPage<GoodsPo> getGoodsListByCard_new(String goodName, String goodsTypes, Long pageNo, Long pageSize);

    Map<Integer, BigDecimal> getAddPriceMap();

    IPage<GoodsPo> getGoodsInfoList_new(GoodsIdsInVo inVo, Long pageNo, Long pageSize);

    GoodsOutVo getGoodInfoWx_new(Integer goodsId);

    IPage<GoodsPo> getTopicGoodsList(GoodsIdsInVo inVo, Long pageNo, Long pageSize);

    IPage<CompanyGoodsOutVo> getGoodsBySaler(AllGoodsInVo inVo, Long pageNo, Long pageSize);

    BigDecimal  getMaxAddPrice(Integer goodsId);
}
